Video stream transmission method and system

ABSTRACT

The present invention relates to a method of transmitting a video stream, including: intercepting a video stream from a server to a video client; wherein the video client is on a user device; throttling onwards transmission of the video stream to the video client; analyzing content within the video of the video stream; and performing an action in relation to the onward transmission to the video client as a result of the analysis of the content; wherein the throttling continues during analysis of the content. A system and software for transmitting a video stream are also described.

FIELD OF INVENTION

The present invention is in the field of video transmission. Moreparticularly, but not exclusively, the present invention relates totransmission of a video stream to facilitate filtering.

BACKGROUND

Historically web filters have been used to filter pornography on theInternet by blocking websites based on URL blacklists and lexicalanalysis. These techniques are becoming less effective as the Internetis becoming more dynamic. They also are ineffective at addressingpornographic videos which can be found on media sharing sites that wouldbe considered legitimate by a blacklist filter. Lexical analysis is alsoineffective as online videos often have little text associated with themthat would indicated the videos contents are pornographic.

One solution to this problem could be to intercept the video stream andanalyze the content of the video. However video analysis is timeconsuming and delaying the video while it is being analyzed can bedetrimental to the user experience and cause connection problems.Alternatively allowing the video to play during analysis allows theclient device to download video data into its buffer much faster thanstandard playback. Therefore, blocking the video after analysis iscompleted is ineffective as the video will continue to play on thedevice until there is no more data in its buffer.

Accordingly, there is a desire for a video stream transmission systemwhich facilitates the analysis and filtering of a video stream from aserver to a client device.

It is an object of the present invention to provide a video streamtransmission system which overcomes the disadvantages of the prior art,or at least provides a useful alternative.

SUMMARY OF INVENTION

According to a first aspect of the invention there is provided a methodof transmitting a video stream, including:

a) intercepting a video stream from a server to a video client on a userdevice;

b) throttling onwards transmission of the video stream to the videoclient;

c) analyzing content within the video of the video stream; and

d) performing an action in relation to the onward transmission to thevideo client as a result of the analysis of the content.

The throttling may continue during the analysis of the content.

The step of interception may occurs at a proxy device between thetransmission from the server to the user device. Alternatively, the stepof interception may occur at the user device.

The throttling may be caused by introducing a pause into onwardtransmission. The pause may be introduced before transmission of everyblock of the video stream. The size of the block may be determined by,at least, the video size and the video length. The size of the block (t)may be calculated by the following formula:

t=s*p(l−d)

where

t=Block Size (Bytes)

s=Video Size (Kilobytes)

l=Video Length (Seconds)

d=Delay (Seconds)

p=Pause (Milliseconds)

The length of the delay (d) may be determined by the video length.

The action in step (d) of the method may include one of increasing thethrottling of onward transmission of the video stream, decreasing thethrottling of onward transmission of the video stream, or blockingonward transmission of the video stream.

During initial interception of the video stream an initial block of aspecified size of the video stream may be transmitted onto the videoclient. The specified size of the initial block may be at least the sizeof the header of the video.

The step of analyzing content may include analyzing the content forpornographic content. The action in step (d) of the method may includeblocking of the onward transmission of the video stream if thepornographic content as a result of the analysis is determined to exceeda specified threshold.

The analysis may utilize a static image analysis of at least some frameswithin the video.

The method may further including the step of requesting a secondtransmission of the video from the server; wherein the analysis may beperformed on the content of the video within the second transmission.

According to a further aspect of the invention there is provided asystem for transmission of a video stream, including:

a first processor configured to throttle onwards transmission of a videostream to a video client on a user device and to perform an action inrelation to the onward transmission to the video client as a result ofanalysis of content of the video of the video stream;

a second processor configured to analyze the content within the video ofthe video stream; and

a communications apparatus configured to intercept the video stream fromthe server to the video client on the user device.

Other aspects of the invention are described within the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention will now be described, by way of exampleonly, with reference to the accompanying drawings in which:

FIG. 1 : shows a block diagram illustrating a system in accordance withan embodiment of the invention;

FIG. 2 : shows a flowchart illustrating a method in accordance with anembodiment of the invention; and

FIG. 3 : shows a block diagram illustrating a system in accordance withan embodiment of the invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

The present invention provides a video stream transmission method andsystem which facilitates the analysis and filtering of the video streamduring transmission from a server to a client.

The inventors have discovered that the problems existing in the priorart can be solved by intercepting the video stream and limiting the flowof the data to the requesting device while video analysis is performedon the visual data. By throttling the data the device's buffer remainsonly a few seconds ahead of real time playback. If video analysisreturns a positive result the video can be blocked and as the device'sbuffer is empty the video will stop playing shortly thereafter.

In addition the invention can dynamically increase or decrease thethrottle based on feedback from the video analysis system.

In FIG. 1 , a video stream transmission system in accordance with anembodiment of the invention is shown.

A server 100 is shown. The server 100 is configured to deliver videostreams in response to requests from clients 101. For example, theserver 100 may be a web server receptive to HTTP/HTTPS requests.

A first communications apparatus 102 is shown. The communicationsapparatus 102 is configured to intercept video streams from the server100 to a client 101.

A first processor 103 is shown. The first processor 103 is configured toreceive the intercepted video stream and to throttle onward transmissionof the video stream to a video client 101.

The video client 101 is executing on a user device. The video client 101may be, for example, a web browser, a plugin within a web browser suchas Adobe Flash Player or Microsoft Silverlight, or a dedicated videoapplication such as Quicktime.

The user device may be a general purpose computing device such as adesktop computer, a laptop, a tablet computer, or a smartphone.Alternatively the user device may be a dedicated video player such as anetwork-enabled Blu-ray/DVD player, a network-enabled media player suchas an Apple TV or Roku, or a Smart TV, or the user device may be amultifunction device such as a games console.

The first processor 103 may request that the content of the video streamis analyzed by a second processor 104. The requests may be made bystoring the request within a database accessible to both processors 103and 104. The database may be collocated with one or other processors 103and 104, or the database may be remotely located from both processors103 and 104. In the latter case, the processors 103 and 104 maycommunicate with the database via a network or combination of networks,such as the Internet.

In one embodiment, a plurality of first processors 103 may communicatevia the database with one or a plurality of second processors 104.

The second processor 104 may be configured for analyzing the content ofthe video stream either directly from the first transmission or from arequested second transmission of the video stream. Analysis of thecontent of the video stream may be performed by static image analysis ofone or more frames of the video stream.

The first 103 and/or second 104 processor may exist within the userdevice itself or may be deployed in a physically separate proxy device.The proxy device may be collocated with the user device, for example, ata router or wireless access point, or may be remotely located at an ISPutilized by the user device or virtually within or across a cloud-basedarchitecture. It will be appreciated that other physical deployments canbe envisaged.

A second communications apparatus 105 is shown. In one embodiment, thesecond communications apparatus 105 is configured to request a secondtransmission of the video stream from the server 100 for the secondprocessor 104 to analyze.

The first 102 and second 105 communications apparatus may be the samephysical apparatus.

The first 103 and second 104 processor may be the same physicalprocessor.

The server 100, the communications apparatuses 102 and 105, and thevideo client 101 on the user device may communicate across a network orplurality of interconnected networks such as the Internet.

The first processor 103 may transmit onward the video stream to thevideo client 101 within the user device when the processor 103 existswithin the user device, or across a communications channel, a network orplurality of interconnected networks where the first processor 103 isdeployed in a physically separate device.

In FIG. 2 , a method of video stream transmission in accordance with anembodiment of the invention will be described.

In step 201, a video stream transmission from a server to a video clienton a user device is intercepted.

The video stream may have been requested by the video client from theserver, for example, by a HTTP/HTTPS request.

In one embodiment, all requests from the user device to servers acrossthe Internet or a network may be intercepted and the nature of therequest may be determined. Requests that relate to video streams maytrigger interception of data transmitted from servers in response to therequests.

In step 202, the transmission is throttled for onward transmission tothe video client.

The transmission may be throttled by pausing before transmitting blocksof the video. The length of the pause may be, preferably, preconfiguredor calculated from one or more factors of the video such as the size andlength of the video and/or the size of the blocks. The size of theblocks may be, less preferably, preconfigured or calculated from one ormore factors of the video such as the size and length of the videoand/or the length of the pause. For example, the pause and/or block sizecould be configured such that playback of the video at the video clientdoes not slow down, but also such that the video client does not locallybuffer a significant quantity of the video.

In one embodiment, before throttling of onward transmission of thevideo, an initial block of the video stream may be transmitted to thevideo client. The size of the initial block may be of a size to ensurethat the entire header of the video is transmitted to the video client.Certain types of video clients may drop the connection if the entireheader is not received quickly during a video stream. Transmitting aninitial block may, therefore, prevent these video clients from droppingthe connection. The size of the header of a video may not be uniform.Therefore, in one embodiment, the size of the initial block may bepredefined to a size sufficiently large to cover, at least, most videos.Alternatively, the size of video headers tend to be correlated to videosize, therefore, the size of the initial block may be dynamicallycalculated based upon the size of the video.

In one embodiment, before throttling the video stream, metadata relatingto the video is first searched within a database of prior analyzedvideos. If the video has already been analyzed, the process may skipdirectly to step 204 and the action may be performed on the basis of theprior analysis. The metadata may be the URI (Uniform ResourceIdentifier) for the video.

In step 203, content of the video is analyzed.

Preferably, the transmission is throttled during analysis of the contentof the video.

The video may be analyzed for pornographic content.

The content may be extracted from the received video stream. Morepreferably, a request is made for a second transmission of the video.This may provide an advantage of enabling faster transmission of thevideo if the request is made from an apparatus with a faster connectionto the server or if the request indicates that the video is to betransmitted faster—for example if a lower quality version of the videocould be transmitted. The request may relate to transmission of chunksof the video. The chunks may be non-contiguous and may be from acrossthe length of the video. Non-contiguous chuck transmission may providean advantage by permitting assessment of the entire video quickly.

In step 204, as a result of that analysis, an action is performed inrelation to the onward transmission of the video stream.

For example, if the content of the video is deemed by the analysis toexceed a specific pornographic threshold, the throttling may beincreased or the transmission may be blocked, and if the content isdeemed by the analysis not to exceed a specific pornographic threshold,the throttling may be decreased or removed entirely.

In one embodiment, the video stream may be replaced by another videostream. For example, a video stream indicating that the content is beingblocked.

In FIG. 3 , an embodiment of the invention will be described.

A Video Throttling (VT) Proxy Server 301 listens on a port for webrequests to web servers accessible via the Internet 302 or a networkfrom a browser 303 or device. The proxy server 301 intercepts theresponses 304 to each request to identify whether they contain videodata. If no video data is identified the response is sent to therequesting browser 303 or device. If the response 304 contains videodata then the VT proxy 301 performs a look up of the video URI in a URIdatabase 305. If the URI is not present in the database 305 then it willbe added and the status set to Waiting To Be Scanned. If the URI ispresent in the database 305 and the status is Scanning Complete it willcheck the result and take action based upon the result. If the URI ispresent in the database 305 and the status is Scanning In Progress thenthe VT Proxy 301 will start throttling the data.

The VT Proxy 301 sends an initial 1000 bytes of data to the requestingbrowser 303 or device to ensure the request does not time-out. Thenumber of initial bytes is configurable. For example, the number ofinitial bytes may be configured to ensure that the header for the video(including metadata information), which is typically streamed before thevideo content, is entirely transmitted to the browser 303.

The VT Proxy 301 then polls the database 305 periodically for the videolength. This information is added to the database 305 by a Video RatingSystem 306. When the information is available the VT Proxy 301 thencalculates the throttling rate which is the number of bytes to be sentafter a specified pause. Preferably the specified pause is 1millisecond. In one embodiment, the pause is configured as small assupported by the hardware and operating system.

The throttling rate may be calculated using the following formula:

t=s*p/(l−d)

where:

t=Throttling Rate (Bytes)

s=Video Size (Kilobytes)

l=Video Length (Seconds)

d=Delay (Seconds)

p=Pause (Milliseconds)

The value of d may calculated as a percentage of the video length. Thispercentage is configurable.

For example, where the delay percentage is 5% and the video is of length100 seconds, the video size is 100 thousand Kilobytes, and the pause is1 millisecond, there will be a delay of 5 seconds and the throttlingrate will be 1053 bytes.

In an alternative configuration, the throttling rate is predefined andthe pause is calculated, for example, using the following formula:

p=t(l−d)/s

For example, given the original example, where the throttling rate is2000 bytes, the pause will be 1.9 milliseconds

Once the value of t is calculated the VT Proxy 301 release t bytes tothe requesting browser 303 or device, it then checks the database 305for a result and waits p milliseconds before it sends another t bytes.It repeats this process until a result is present. The VT Proxy 301 canmodify its behavior based on the result for example it could increasethrottling, decrease throttling or terminate the connection.

Increasing the throttle effectively pauses the video until the throttleis decrease or the connection terminated. This happens because there isno data in the client's video buffer to support playback.

Decreasing the throttle will effectively allow the video to play asnormal and the client's video buffer to be filled.

Terminating the connection will effectively block the video as no moredata will be sent to the requesting browser 303 or device. As the videobuffer only contains data a few seconds ahead of playback the video willstop playing shortly after the connection is terminated.

The Video Rating (VR) System 306 has a dedicated thread to check thedatabase 305 for video URI's with the status Waiting To Be Scanned. Whena video URI with the above status is identified it changes the status toScanning in Progress and starts downloading 304 the video on a separatethread. If the video is greater than 480p then to improve performancethe VR System 306 will attempt to download the video in 480p; if it isavailable or the lowest resolution above it. Once the video header isreceived it decodes the data using a video decoder and updates thedatabase 305 with the video length in seconds (LengthSeconds), file sizeand frame rate (FR). The VR System 306 also uses the header informationto calculate parameters for the scanning logic.

The VR System 306 utilizes the following parameters for the scanninglogic:

1. Seconds to Skip per Frame (SSF)

2. Minimum number of frames to scan−(MinFS)

3. Maximum number of frames to scan−(MaxFS)

4. Seconds either side of frame (ESF)

From the video header the VR System 306 retrieves the total size of thevideo in seconds which is LengthSeconds.

The SSF defines the gap in seconds between each frame extraction;LengthSeconds/SSF will give the total number of frames to extract (TFE).If LengthSeconds/SSF is greater than MaxFS then the TFE for scanningwill equal MaxFS or if LengthSeconds/SSF is less than MinFS then the TFEfor scanning will equal MinFS. If either of these are true then a newSSF is calculated as LengthSeconds/MaxFS or LengthSeconds/MinFS.

The VR System 306 has two separate modes for downloading the video data;Sequential mode and Intermittent mode.

In Sequential mode the VR System 306 downloads the entire video frombeginning to end like a video player. This is done if the video is veryshort in length or the video does not support range header requests. Theadvantage of this mode is that it produces a minimal number of corruptframes however the disadvantage is that it takes longer to download thedata as all the data is required.

In Intermittent mode the VR System 306 only downloads chunks 307 of dataat various locations along the video length based on the total number offrames to extract. The advantage of this mode is that only a fraction ofthe data needs to be downloaded which significantly improves theperformance however the disadvantage of this mode is a higher number ofcorrupt frames are produced.

In Intermitted mode the following formula is used to calculate thelocation of each frame that is to be extracted:

File Size/Total Frames=Frame Size

Frame Size*(SSF*FR)=Bytes to Skip per Frame(BSF)

The BSF is the number of bytes to skip between each frame that is to bedownloaded.

In Intermittent mode the following formula is used to calculate the sizeof each data chunk to be download:

Frame Size*(ESF*FR)=Data Chunk Size(DCS)

The Data Chunk Size is the number of bytes to be downloaded before andafter each frame that is to be extracted.

The VR System 306 then downloads each chunk 307 of data using a “range”parameter in the http request. Once it has the required chunks 307 ofdata it decodes the frames from each chunk 307 using a video decoder.The VR System 306 then selects one or more frames 308 from each chunk307 and passes it to the pornographic content recognition engine foranalysis. When all the frames have been analyzed the pornographiccontent recognition engine returns a result as to whether the video ispornographic or not. The result is written to the database 305 and thestatus for the URI is changed to Scanning Complete.

Embodiments of the invention may be deployed in a variety of deploymentconfigurations including cloud, hybrid and on premise. It will beappreciated that embodiments of the invention may be implemented withinsoftware, hardware, or a combination of both.

An application program interface may be provided to facilitateinteroperation by user/client devices or other systems with embodimentsof the invention

Cloud Deployment

The cloud deployment allows the VT Proxy 301, VR System 306 and database305 to be deployed in the cloud as a Software as a Service (SaaS)solution. Client devices are configured to browse via the cloud basedproxy and no client side software is required.

Hybrid Deployment

The hybrid deployment allows for the VT Proxy 301 to be deployed on theclient device or within the local network while the VR System 306 anddatabase 305 are deployed in the cloud. The client device is configuredto use the local instance of the VT Proxy 301 which communicates withthe database 305 hosted in the cloud. It is also possible to deploy theVR System 306 locally and only have the database 305 deployed in thecloud.

On Premise Deployment

The on premise deployment allow for the VT Proxy 301, VR System 306 anddatabase 305 to be deployed on the device or within the local network.

An example of an embodiment of the invention in use will now bedescribed.

A minor connects to the Internet on a PC protected by the invention. Hebrowses to a popular video hosting site and searches recently uploadedvideo for something that could be pornographic. The traditional webfilter allows him to start playing the video as the site is consideredlegitimate.

The VT Proxy 301 identifies the response contains video data. It looksup the URI in the database 305 and it is not present therefore it addsthe URI to the database 305 with a status of Waiting To Be Scanned. TheVT Proxy 301 releases an initial 1000 bytes of video data to the browser303 to maintain the connection.

The VR System 306 downloads the video header and writes the followingdetails to the database 305:

Video length=196 seconds

It also obtains the following information from the video header:

File Size=17081 Kb (17490850 bytes)

Total Frames=4899

Frames Rate=24

The VT Proxy 301 obtains the video length from the database 305 andcalculates the (t) throttling rate based on a delay (d) of 20 seconds(which is 10.3% of the video length):

17081/(196−20)=97

The value of p is 1 millisecond therefore the throttling rate is 97bytes. The VT Proxy 301 delivers 97 bytes to the browser 303 and thenpauses for 1 millisecond and then sends another 97 bytes; it continuesto do this until a result is present in the database 305.

The video starts to play on the browser 303; the beginning of the videois not pornographic. So far the user's experience is unaffected.

The VR System 306 extracts the defined parameters for the scanninglogic:

Seconds to Skip per Frame (SSF)=10

Minimum number of frames to scan−(MinFS)=10

Maximum number of frames to scan−(MaxFS)=40

Seconds either side of frame (ESF)=2

The VR System 306 calculates the total number of frames to be extracted(TFE):

196/10=19

The VR System 306 checks that 19 is less than 40 (MaxFS) and greaterthan 10 (MinFS) which it is so the TFE=19.

The VR System 306 calculates the frame size:

17490850/4899=3570 bytes

The VR System 306 calculates the bytes to skip per frame:

3570*(10*24)=856800 bytes

The following data positions are identified

856800

1713600

2570400

3427200

4284000

5140800

5997600

6854400

7711200

8568000

9424800

10281600

11138400

11995200

12852000

13708800

14565600

15422400

16279200

The VR System 306 calculates the size of data chunk to be downloadedbefore and after each data position:

3570*(2*24)=171360 bytes

The VR System 306 then downloads each chunk 307 of data using a “range”request in the http request. Once it has the required chunks 307 of datait decodes the frames from each chunk using a video decoder. In thiscase one frame 308 is selected from each chunk 307 and passed to apornographic content recognition engine for analysis.

The pornographic recognition engine returns a result that indicates thevideo is pornographic. The VR System 306 writes this result to thedatabase 305.

The VT Proxy 301 detects and extracts the result from the database 305 8seconds into the playback of the 196 second long video and terminatesthe connection. The playback continues until 12 seconds at which pointthe video stop playing as the video buffer is empty. Therefore, the useris protected from being exposed to age restrictive material.

The user refreshes his browser 303 and tries to play the video again.The VT Proxy 301 identifies the video data and looks up the URI in thedatabase 305. The URI is present with a result that indicates the videois pornographic and the VT Proxy 301 terminates the connection.

If the video had initially returned a result of non-pornographic the VTProxy 301 would have decreased the throttle so that the video would havedownloaded as normal and the user's experience would have remainedunaffected.

Potential advantages of some embodiments of the present inventioninclude that video streams can be analyzed during transmission from aserver to a video client without the video client dropping the videostream and/or within interruption to video playback. Further potentialadvantages include that the video content may be analyzed based uponcontent rather than predefined blacklists or lexical analysis ofmetadata, video streams may be filtered for receipt by any device, userexperience of non-pornographic video streaming may be unaffected, andvideo content analysis may be faster.

While the present invention has been illustrated by the description ofthe embodiments thereof, and while the embodiments have been describedin considerable detail, it is not the intention of the applicant torestrict or in any way limit the scope of the appended claims to suchdetail. Additional advantages and modifications will readily appear tothose skilled in the art. Therefore, the invention in its broaderaspects is not limited to the specific details, representative apparatusand method, and illustrative examples shown and described. Accordingly,departures may be made from such details without departure from thespirit or scope of applicant's general inventive concept.

1-28. (canceled)
 29. A method of transmitting a video stream, including:a) intercepting a video stream from a server to a video client; whereinthe video client is on a user device; b) throttling onwards transmissionof the video stream to the video client; c) analyzing content within thevideo of the video stream; and d) performing an action in relation tothe onward transmission to the video client as a result of the analysisof the content; wherein the throttling continues during the analysis ofthe content.
 30. A method as claimed in claim 29 wherein the step ofinterception occurs at a proxy device between the transmission from theserver to the user device.
 31. A method as claimed in claim 29 whereinthe step of interception occurs at the user device.
 32. A method asclaimed in claim 29 wherein the throttling is caused by introducing apause into onward transmission.
 33. A method as claimed in claim 32wherein a pause is introduced before transmission of every block of thevideo stream.
 34. A method as claimed in claim 33 wherein the size ofthe block is determined by, at least, the video size and the videolength.
 35. A method as claimed in claim 34 wherein the size of theblock (t) is calculated by the following formula:t=s*p/(l−d) where t=Block Size (Bytes) s=Video Size (Kilobytes) l=VideoLength (Seconds) d=Delay (Seconds) p=Pause (Milliseconds)
 36. A methodas claimed in claim 35 wherein the length of the delay (d) is determinedby the video length.
 37. A method as claimed in claim 29 wherein theaction includes one of increasing the throttling of onward transmissionof the video stream, decreasing the throttling of onward transmission ofthe video stream, or blocking onward transmission of the video stream.38. A method as claimed in claim 29 wherein during initial interceptionof the video stream an initial block of a specified size of the videostream is transmitted onto the video client.
 39. A method as claimed inclaim 38, wherein the specified size of the initial block is at leastthe size of the header of the video.
 40. A method as claimed in claim 29wherein the step of analyzing content includes analyzing the content forpornographic content.
 41. A method as claimed in claim 40 wherein theaction includes blocking of the onward transmission of the video streamif the pornographic content as a result of the analysis is determined toexceed a specified threshold.
 42. A method as claimed in claim 29wherein the analysis utilizes a static image analysis of at least someframes within the video.
 43. A method as claimed in claim 29 furtheringincluding the step of requesting a second transmission of the video fromthe server; wherein the analysis is performed on the content of thevideo within the second transmission.
 44. A system for transmission of avideo stream, including: a first processor configured to throttleonwards transmission of a video stream to a video client on a userdevice and to perform an action in relation to the onward transmissionto the video client as a result of analysis of content within the videoof the video stream; a second processor configured to analyze thecontent within the video of the video stream; and a communicationsapparatus configured to intercept the video stream from the server tothe video client on the user device; wherein the first processor isconfigured to continue throttling of the onward transmission of thevideo stream during analysis of the content of the video of the videostream by the second processor.
 45. A system as claimed in claim 44,further including a further communications apparatus configured forreceiving a second transmission of the video from the server; whereinthe second processor analyses the content within the video of the secondtransmission.
 46. A system as claimed in claim 44, wherein the firstprocessor exists within the user device.
 47. A system as claimed inclaim 44, wherein the second processor exists within the user device.48. A system as claimed in claim 44, wherein the first processor isconfigured to request analysis of the video from the second processorand wherein the second processor analyses the video in response to therequest.
 49. A system as claimed in claim 48, wherein the requests arestored within a database and wherein the second processor is configuredto extract the requests from the database.
 50. A processor configuredfor use with the system of claim 44, wherein the processor is configuredto throttle onwards transmission of a video stream to a video client ona user device and to perform an action in relation to the onwardtransmission to the video client as a result of analysis of content ofthe video of the video stream.
 51. A processor configured for use withthe system of claim 44, wherein the processor is configured to analyzethe content within the video of the video stream.
 52. A user deviceconfigured for use with the system of any one of claims
 44. 53. Anapplication program interface configured for providing access to thesystem of any one of claims
 44. 54. A user device configured for usewith the system of claim
 49. 55. An application program interfaceconfigured for providing access to the system of claim
 49. 56. Acomputer program configured for performing the method of claim 29.